package com.zjsru.plan2024.oneday;

/**
 * 2844. 生成特殊数字的最少操作
 *
 * @Author: cookLee
 * @Date: 2024-11-08
 */
public class MinimumOperations {

    /**
     * 主
     * \
     * 输入：num = "2245047"
     * 输出：2
     * 解释：删除数字 num[5] 和 num[6] ，得到数字 "22450" ，可以被 25 整除。
     * 可以证明要使数字变成特殊数字，最少需要删除 2 位数字。
     * \
     * 输入：num = "2908305"
     * 输出：3
     * 解释：删除 num[3]、num[4] 和 num[6] ，得到数字 "2900" ，可以被 25 整除。
     * 可以证明要使数字变成特殊数字，最少需要删除 3 位数字。
     * \
     * 输入：num = "10"
     * 输出：1
     * 解释：删除 num[0] ，得到数字 "0" ，可以被 25 整除。
     * 可以证明要使数字变成特殊数字，最少需要删除 1 位数字。
     * \
     *
     * @param args args
     */
    public static void main(String[] args) {
        MinimumOperations minimumOperations = new MinimumOperations();
        String num = "2245047";
        System.out.println(minimumOperations.minimumOperations(num));
    }

    /**
     * 最小操作
     *
     * @param num num
     * @return int
     */
    public int minimumOperations(String num) {
        int len = num.length();
        boolean find0 = false, find5 = false;
        for (int i = len - 1; i >= 0; i--) {
            //因为需要25整除，如果位数2，需要25 50 75；如果位数大于3，需要00 25 50 75
            if (num.charAt(i) == '5' || num.charAt(i) == '0') {
                if (find0) {
                    return len - i - 2;
                }
                if (num.charAt(i) == '5') {
                    find5 = true;
                } else {
                    find0 = true;
                }
            } else if (num.charAt(i) == '2' || num.charAt(i) == '7') {
                if (find5) {
                    return len - i - 2;
                }
            }
        }
        if (find0) {
            return len - 1;
        }
        return len;
    }

}
